
//prototype
// console.log(Handphone.prototype);
//原型 protopyte 其实是function对象中的一个属性
//打印出来，发现也是一个对象
// function Handphone(color,brand) {
//   this.color = color,
//   this.brand = brand,
//   this.screen = '18:9',
//   this.system = 'Android'
// }

// var hp1 = new Handphone('red','小米')
// console.log(hp1);

// Handphone.prototype.rom = '64g'
// Handphone.prototype.ram = '6g'
// Handphone.prototype.screen = '16:9'
// Handphone.prototype.call = () => console.log('i am calling somebody');

// console.log(hp1.rom);
// console.log(hp1.ram);
// console.log(hp1.screen);
// hp1.call()
//所有handphone 构造出的实例对象，都能继承原型上的属性和方法
// this上有的属性，不会再从原型上获取


// 所有的方法都挂在原型上（组件中公用不需要修改的方法），所有的配置项都通过this来传。
// 原型的作用： 减少代码冗余

// function Test() {
  
// }

// Test.prototype.name = 'prototype'
// var test = new Test()

// test.num = 1
// console.log(Test.prototype);
//实例化后的对象不可再增加prototype，并且不能更改
// function Telephone() {
  
// }
// function Handphone(color, brand, system) {
//   this.color = color
//   this.brand = brand
//   this.system = system
// }

// Handphone.prototype = {
//   constructor: Telephone // 可以更改构造内的constructor
// }



// Handphone.prototype = {
//   rom : '64g',
//   ram : '6g',
//   screen: '18:9',
//   system: 'android',
//   call: () => console.log('i am calling')
// }

// prototype 通过对象来赋值
// var hp1 = new Handphone('red','iphone','ios')
// console.log(hp1);
// console.log(Handphone.prototype);
// constructor -> 构造函数本身


// function Car() {
  // var this = {
  //   // name: 'Benz' 先查找，找不到name再找proto上的
  //   __proto__ = Car.prototype  //__proto__ 是系统的
  // }
// }
// Car.prototype.name = 'Benz'
// var car = new Car()

// new的时候产生 this:{}
// console.log(car);

// function Person() {
  
// }
// Person.prototype.name = 'zhangsan'
// var p1 = {
//   name: '里斯'
// }
// var person = new Person()
// console.log(person.name);
// person.__proto__ = p1
// console.log(person.name);

function Car() {
  
}
Car.prototype.name = 'benz'
var car = new Car()  //实例化出来后，后续的protorype改变不影响现在的
Car.prototype.name = 'mazda'


